枚举

1.生理周期

题目链接:http://poj.org/problem?id=1006

水题,直接枚举满足条件的日期。

2.称硬币

题目链接:http://poj.org/problem?id=1013

一共12个硬币,每个硬币两种状态,我们枚举可能的假币,一共24种。

3.完美立方Perfect Cubes

题目链接:http://poj.org/problem?id=1543

求满足等式a^3=b^3+c^3+d^3的所有可能的组合。水题。

for(a=5;a<=n;a++)
{
for(b=2;b<n;b++)
{

if(m[a]<3*m[b])

break;
for(c=b;c<n;c++)
{
if(m[a]<m[b]+2*m[c])

break;
for(d=c;d<n;d++)
{
if(m[a]==(m[b]+m[c]+m[d]))

 printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);
}
}
}
}

4.熄灯问题EXTENDED LIGHTS OUT

题目链接:http://poj.org/problem?id=1222

看到这个题目第一选择就是想bfs搜索需要按下的按钮,但是这个题目没说要最短步数,看的课本的解析,只需要枚举第一排按钮的按下与否状态,这样只要第一排确定了,由于必须让

第一排得灯全灭,第二、三、四、五排得都确定了,我们只需要枚举所有的可能2^6个。

5.The Troublesome Frog

题目链接:http://poj.org/problem?id=1054

题目让求出一条最长的路径,我们枚举所有可能的出发点pos1,pos2,然后check是否满足条件

qsort(m,n,sizeof(node),cmp);
for(i=0;i<n-2;i++)
{
for(j=i+1;j<n-1;j++)
{
int dx=m[j].x-m[i].x;
int dy=m[j].y-m[i].y;
int tx=m[i].x-dx;
int ty=m[i].y-dy;
if(tx>=1 && tx<=r && ty>=1 && ty<=c)//不是初始的两个点,因为tx,tx必须位于稻田外面,从这个点跳到m[i]点
continue;
if((m[i].x+result*dx)>r)//是否存在路径更长的可能
break;
if((m[i].y+result*dy)>c || (m[i].y+result*dy)<1)
continue;
tx=m[j].x+dx;
ty=m[j].y+dy;
int cnt=2;
while(tx<=r && tx>=1 && ty>=1 && ty<= c)
{
if(!flag[tx][ty])
{
cnt=0;
break;
}
cnt++;
tx=tx+dx;
ty=ty+dy;
}
if(cnt>result)
result=cnt;
}
}

原文链接: https://www.cnblogs.com/buptLizer/archive/2011/09/07/2169562.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    枚举

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/31908

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午9:11
下一篇 2023年2月8日 上午9:12

相关推荐